package persists

import (
	"context"
	"elastic"
	"fmt"
	"log"
)

func ItemServer() chan interface{} {
	out := make(chan interface{})
	go func() {
		for {
			item := <-out
			_, err := save(item)
			if err != nil {
				log.Println(err)
			}

		}
	}()
	return out
}

func save(item interface{}) (string, error) {
	fmt.Println(item)
	// http.Post()
	// 使用客户端写入  github.com/olivere/elastic go get -v gopkg.in/olivere/elastic.v5

	// elastic库 // 给我维护集群状态的 elastic.SetSniff(false) 它不跑在本机跑在docker上 在内网看不见所以没办法sniff 所以直接false
	client, err := elastic.NewClient(elastic.SetSniff(false))
	if err != nil {
		return "", err
	}
	// client.Index() 可以创建数据也可以修改数据 .Index() 库 Type() 表 .Id Id 是谁 不写 Id("1") 就是自动生成id 插入 BodyJson 结构体 .Do 执行
	// Do(context.Background()) 固定写法
	res, er := client.Index().Index("test").Type("user").BodyJson(item).Do(context.Background())
	// 读取
	//re,e := client.Get().Index("test").Type("user").Id(res.Id).Do(context.Background()) re.Source  这是个byte slice 反序列化你用
	//json.Unmarshal(*re.Source, &结构体)   测试 &结构体后的结果  和 测试定义的结构体比较  A != testA t.Error

	if er != nil {
		return "", er
	}

	fmt.Println(res)

	return res.Id, nil
}
